perm filename HANDOU[E82,JMC]1 blob sn#668490 filedate 1982-07-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	NOTES ON AXIOMATIZING THE BLOCKS WORLD RELYING ON CIRCUMSCRIPTION
C00013 00003	LIST OF AXIOMS
C00016 00004	Remarks:
C00017 ENDMK
C⊗;
NOTES ON AXIOMATIZING THE BLOCKS WORLD RELYING ON CIRCUMSCRIPTION

			by John McCarthy

	We would like to describe moving by

∀ obj place. Move(obj,place) causes At(obj, place)

using

∀e p. e causes p  ⊃ ∀s.succeeds(e,s) ⊃ holds(p,result(e,s))

and using non-monotonic reasoning to determine when  Move(obj,place)
succeeds, what it changes and what remains unchanged.

	The frame problem is to be handled by

∀obj place. persistent At(obj,place)

and further non-monotonic reasoning.  In these notes we describe
what circumscriptions on what information will do the job, but we
don't yet have a fully coherent notion of how to express the common
sense knowledge in a way that insures that the right circumscriptions
will be done.


SUCCESS AND PREVENTION

∀obj place. Move(obj, place) causes At(obj, place)

∀e p. e causes p ⊃ ∀s. succeeds(e,s) ⊃ holds(p,result(e,s))

and consequently

∀obj place s. succeeds(Move(obj,place),s) 
			⊃ holds(At(obj,place),result(Move(obj,place),s)).


SUCCESS

∀obj place s. clear(top(obj),s) ∧ clear(place,s) ∧ ¬prevented(Move(obj,place),s)
		⊃ succeeds(Move(obj,place),s)

∀obj1 obj2 s. at(obj1,top(obj2),s) ⊃ unclear(obj2,s)

∀obj s. clear(obj,s) ≡ ¬unclear(obj,s)


FRAME

∀p e s. persistent p ∧ ¬changes(e,p) ∧ holds(p,s) ∧ successful(e,s)
				⊃ holds(p,result(e,s))

∀obj place place1. changes(Move(obj,place),At(obj,place1))

∀v e s.persistent1 v ∧ ¬changes1(e,v) ⊃ value(v,result(e,s)) = value(v,s)

∀obj place. persistent At(obj,place)

∀obj.persistent1 Color(obj)


PREVENTION

∀obj place s. tooheavy obj ⊃ prevented(Move(obj,place),s)

∀place place1 obj s. at(obj,place1,s) ∧ ¬close(place1,place,s)
				⊃ prevented(Move(obj,place),s)

Of course, there can be more axioms listing conditions that might
prevent moving.

∀place place1 place2 s.small(place) ∧ part(place1,place) ∧ part(place2,place)
				⊃ close(place1,place2,s)

∀obj place s.at(obj,place,s) ⊃ part(top(obj),place,s)

∀place1 place2 place3 s. part(place1,place2,s) ∧ part(place2,place3,s)
				⊃ part(place1,place3,s)


REIFICATIONS

∀obj place s. holds(At(obj,place),s) ≡ at(obj,place,s)

∀obj s.value(Color(obj),s) = color(obj,s)


THE PARTICULAR SITUATION S0

small(Table)

part(Place1,Table,S0)
part(Place2,Table,S0)
part(Place3,Table,S0)
part(Place4,Table,S0)

at(A,Place1,S0)
at(B,Place2,S0)
at(C,top(B),S0)
at(D,place5,S0)
at(E,place3,S0)

tooheavy A

color(A,S0) = Red
color(B,S0) = Red

color(C,S0) = Green ∨ color(E,S0) = Green

A ≠ B, etc.

disjoint(Place1,Place2), etc.

The last two should be obtained by some kind of non-monotonic reasoning,
but ordinary circumscription without the introduction of names won't work.
Reiter or somebody calls this "the unique names assumption".


USING CIRCUMSCRIPTION

	Suppose we want to put block  C  onto block  A  and then put
block  B  onto block  C.  The situation in question is

S2 = result(Move(B,top(C)),result(Move(C,top(A)),S0))

where  S0  is described above and is shown in the attached figure.
We want to show that

at(B,top(C),S2) ∧ at(C,top(A),S2)

in order to show success of our actions.  We may also want to show that
the other blocks are unmoved.

	We must first show

succeeds(Move(C,top(A),S0)

and this requires showing

clear(top(C),S0) ∧ clear(top(A),S0) ∧ ¬prevented(Move(C,top(A)),S0).

In the following reasoning, there will be some wishful thinking, but
we shall need ways of controlling the circumscription process so that
the wishful thinking turns into reality.

We infer  clear(top(C),S0)  by circumscribing   at(obj,place,S0)  or
perhaps just  at(obj,top(C),S0)  using all the availabile facts.
It isn't clear that this will go with all available facts because some
situation that is the result of actions might be  S0, and in that
situation  top(C)  might not be clear.  It isn't reasonable to presuppose
or even prove by circumscription that  S0  is a "Garden of Eden" situation,
because this information might not be available in other case where we
want to prove such facts.

	However, if we circumscribe using
just the known instances of  at(obj,top(C),S0), there aren't any.  Indeed
the only wffs whose conclusion includes  at(obj,place,s)  are the
result-of-moving rules.

clear(top(A),S0  is obtained similarly to  clear(top(C),S0).

In order to show that  ¬prevented(Move(C,top(A)),S0)  we circumscribe
prevented(Move(C,top(A),S0).  This requires showing
¬tooheavy(C)  which is also done by circumscription.
This at least is easy, since the only statement in which  tooheavy
occurs positively is  tooheavy(A),  but of course we are using the
fact that all the blocks are distinct.

The definition of  close  and the specific facts about  part  show
that  close(top(B),top(A)).  The condition  at(obj,place1,s)  in
the condition for non-closeness preventing moving specializes to
at(C,place1,S0),  and circumscribing   at(C,place1,S0)  shows that
this is the only place  C  is at.

Thus we have the premisses needed to establish

at(C,top(A),result(Move(C,top(A)),S0)).

Now we need to show that  B  and  C are clear and close in the
resulting situation and that  B  isn't too heavy.  The latter
property is not situation dependent, so it follows by the same
argument that previously established that  C  wasn't too heavy.

To establish closeness we need to use the persistence of  at
and to circumscribe  changes(Move(obj,place),At(obj,place1)).
This formalization may not be flexible enough for some purposes,
because  changes(e,p)  is not situtation dependent.


INDUCTION

	To prove that something cannot be done or to prove something
about all things that can be done, we need some induction axiom
schemes.  We introduce  canresult(s,s'),  meaning that the situation
s'  can be obtained from the situation  s  by some sequence of actions, by

∀s.canresult(s,s)

and

∀s s' a.canresult(s,s') ⊃ canresult(s,result(a,s')),

where the variable  a  is considered to range over those events which are
actions.

Circumscribing the predicate  canresult  in these two formulas leads
to the schema

∀s.(phi(s) ∧ ∀s' a.[phi(s') ⊃ phi(result(a,s'))] ⊃ ∀s'(phi(s') ⊃ canresult(s,s')).

Presumably it is best to take it as an axiom schema rather than conjecture
it by circumscription each time it is wanted.  Doing so amounts to assuming
that the only situations that can result from  s  are those that are
the consequences of a sequence of events.  This seems to embody what we
mean by "can result".

	A notion of achievable propositional fluents will be required.  We have

∀p s.∃s'.canresult(s,s') ∧ holds(p,s') ⊃ achievable(p,s),

but this is insufficient, because a fluent  p  may be achievable even though
no specific situation in which  p  holds is achievable, because  p  may
turn out to hold no matter which of two courses of events occurs.
LIST OF AXIOMS

Actions and events:

e1:	∀e p. e causes p ⊃ ∀s. succeeds(e,s) ⊃ holds(p,result(e,s))

e2:	∀p e s. persistent p ∧ ¬changes(e,p) ∧ holds(p,s) ∧ successful(e,s)
				⊃ holds(p,result(e,s))

e3:	∀v e s.persistent1 v ∧ ¬changes1(e,v) ⊃ value(v,result(e,s)) = value(v,s)


Moving objects:

m1:	∀obj place. Move(obj, place) causes At(obj, place)

m2:	∀obj place place1. changes(Move(obj,place),At(obj,place1))

m3:	∀obj place. persistent At(obj,place)

m4:	∀obj place s. clear(top(obj),s) ∧ clear(place,s) ∧ ¬prevented(Move(obj,place),s)
		⊃ succeeds(Move(obj,place),s)

m5:	∀obj1 obj2 s. at(obj1,top(obj2),s) ⊃ unclear(obj2,s)

m6:	∀obj s. clear(obj,s) ≡ ¬unclear(obj,s)

m7:	∀obj place s. tooheavy obj ⊃ prevented(Move(obj,place),s)

m8:	∀place place1 obj s. at(obj,place1,s) ∧ ¬close(place1,place,s)
				⊃ prevented(Move(obj,place),s)

m9:	∀place place1 place2 s.small(place) ∧ part(place1,place) ∧ part(place2,place)
				⊃ close(place1,place2,s)

m10:	∀obj place s.at(obj,place,s) ⊃ part(top(obj),place,s)

m11:	∀place1 place2 place3 s. part(place1,place2,s) ∧ part(place2,place3,s)
				⊃ part(place1,place3,s)



Coloring objects:

c1:	∀obj color. Paint(obj,color) causes Equal(color(obj),color)

This requires more reification than the formalization of  Move(obj,place)  and
suggest a different formalization.  Namely,

c1':	∀obj color. assigns(Paint(obj,color),color(obj), color)

together with the general axiom

e1':	∀e v val s.assigns(e,v,val) ∧ successful(e,s) ⊃ value(v,result(e,s)) = val

analogous to axiom  e1.

c2:	∀obj.persistent1 Color(obj)


REIFICATIONS

r1:	∀x y s.holds(Equal(x,y),s) ≡ value(x,s) = value(y,s)

r2:	∀obj place s. holds(At(obj,place),s) ≡ at(obj,place,s)

r3:	∀obj s.value(Color(obj),s) = color(obj,s)
Remarks:

1. Query: Can we conclude that all iterates of a function  f  are
distinct by some kind of non-monotonic reasoning, e.g. circumscription
of some higher order predicate?

	In particular, we wish to avoid having to show that nothing more
can be learned about the situation  S0  by reasoning from
it to future situations and then back to  S0.  This is true about
the blocks world but is often not true when purpose is involved.
For example, we may reason from the fact that a person wants  x
tomorrow that he will have done  y  yesterday to make it possible.